import 'dart:io';

import 'package:animal/network/api.dart';
import 'package:animal/socket/socket_client.dart';
import 'package:animal/ui/login/NWApi.dart';
import 'package:animal/ui/login/model/short_login_model.dart';
import 'package:animal/ui/login/page/forget_pwd_page.dart';
import 'package:animal/ui/login/page/perfect_info_page.dart';
import 'package:animal/ui/login/page/set_pwd_page.dart';
import 'package:animal/utils/RuleUtils.dart';
import 'package:animal/utils/index.dart';
import 'package:animal/utils/sputils/sp_config.dart';
import 'package:animal/widgets/dialog_widget.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';

class ShortLoginController extends GetxController {
  //手机号码
  final TextEditingController controller = TextEditingController();

  //验证码
  final TextEditingController codeController = TextEditingController();

  //勾选按钮，默认false
  RxBool checkBtn = true.obs;

  late AndroidDeviceInfo androidInfo;

  FocusNode userFocusNode = FocusNode();

  //用户资料
  User? userInfo;

  String?val;

  final ClientSocket clientSocket = Get.find();

  ///勾选按钮事件
  void checkTap() {
    checkBtn.value = !checkBtn.value;
  }

  ///前往用户协议
  void gotoUserAgreement() {
    SmartDialog.showToast("前往用户协议", alignment: Alignment.center);
  }

  ///前往隐私协议
  void gotoPrivacy() {
    SmartDialog.showToast("前往隐私协议", alignment: Alignment.center);
  }

  ///前往忘记密码页面
  void gotoForgetPwd() {
    Get.to(const ForGetPwdPage());
  }

  ///前往完善信息
  void gotoPerfectInfo() {
    if (userInfo!.isPwd!) {
      Get.to(PerfectInfoPage());
    } else {
      Get.to(const SetPwdPage());
    }
  }

  ///短信登录
  void codeLogin() async {
    userFocusNode.unfocus();
    if (!controller.text.isNotEmpty) {
      SmartDialog.showToast("手机号码不能为空");
      return;
    }
    if (RuleUtils().checkStringRule(RuleType.phone, controller.text, null) != null) {
      SmartDialog.showToast("手机号码错误，请重新输入");
      return;
    }
    if (!codeController.text.isNotEmpty) {
      SmartDialog.showToast("验证码不能为空");
      return;
    }
    if (!checkBtn.value) {
      SmartDialog.showToast("请勾选《用户协议》和《隐私政策》");
      return;
    }
    var putData = {
      "code": codeController.text,
      "mobile": controller.text,
    };
    SmartDialog.showLoading(msg: "正在登录中");
    HttpManager().post<ShortLoginModel>(NWApi.userLogin, queryParameters: putData).listen((value) {
      userInfo = value.data!.user!;
      SpConfig().setUserInfo(jsonEncode(userInfo));
      SpConfig().setUserToken(userInfo!.token!);
      SpConfig().setUserId(userInfo!.id!);
      clientSocket.connect(Get.context);
      SmartDialog.dismiss();
      gotoPerfectInfo();
    }, onError: (err) {
      SmartDialog.dismiss();
      SmartDialog.showToast(err.message);
      debugPrint(err.message);
    });
  }

  ///提示弹窗
  void promptDialog() {
    SmartDialog.show(
      widget: DialogWidget.titleDialog(
          onTap: define,
          title: "温馨提示",
          content: """
欢迎您使用火讯APP，请您阅读并同意<<用户服务协议>>和<<隐私政策>>，特向您说明如下：
1、为了提供优质的购物体验，火讯APP需要联网并使用您的位置信息，以加载发货地和快速添加收货地址，您有权拒绝或者取消授权。
2、为了保障您的账户安全，识别账户异常状态、保障交易安全，我们将收集您所使用的设备相关信息。
3、为提升您的购物体验，我们将缓存部分商品图片，为此需读取您的SD卡权限，如您需要更换头像或者发布商品时需调取相册权限。
4、在您向客服发送语音消息时我们需获取麦克风权限，在进行扫二维码时将获取相机权限。
5、您可以在系统中撤回授权，或进入APP内设置、修改个人信息，同时我们也提供注销账户的方式。
在使用APP之前，请您阅读并充分理解火讯商城的<<用户服务协议>>和<<隐私政策>>，了解您的用户权益及相关数据的处理方法。如您同意以上协议内容，请点击“同意”，开始使用我们的产品和服务。我们将以业界领先的信息安全保护水平，保护您的个人信息，感谢您对火讯商城的信任。
    """,
          readColor: const Color(0XFFF8BC3C),
          noReadColor: const Color(0X4CF8BC3C)),
      isLoadingTemp: false,
      alignmentTemp: Alignment.center,
      clickBgDismissTemp: false,
    );
  }

  ///确定提示信息操作
  void define() {
    SmartDialog.dismiss();
    checkBtn.value = true;
  }

  @override
  void onReady() {
    super.onReady();
    promptDialog();
  }
}
